# -*- encoding: utf-8 -*-
"""
PyCharm python
2022年07月02日
by littlefean
"""
from typing import *


def main():
    # python的世界中只有一种东西叫对象
    # 万物皆对象
    # 别的语言中有基础数据类型和对象类型之分
    # 基础数据类型是 int、bool、等等
    # python中基础数据类型都是对象
    # 万物皆对象
    # 对象怎么产生？由类产生
    # 又因为万物皆对象
    # 那么这个类是不是也是一个对象呢？
    # 没错，类也是一个对象
    # 类()  调用之后就产生了一个对象
    # 为了区分，我们可以把类产生的对象叫实例

    # 那么这个类是怎么产生的呢？
    # 类是我们通过class写出来的
    # 所以对象可以分为两种
    # 一个是类，一个是实例，类产生实例

    # 但是实际上类也可以被产生
    # 那就是产生类的类
    # 这个东西叫元类，
    # 就比如说工厂可以生产螺丝钉，工厂的工厂可以生产工厂。  此处可以配gameOfLife
    # type 就是python里面的元类

    # 那这个元类可不可以被一个更高级的东西产生呢？
    # 也就是产生产生工厂的工厂？
    # 不会有了，这个东西就是它自己了。

    # 至此，我们的python世界里有了三种对象
    # 实例  类  元类

    # 实例() 调用，这就很像function

    def f():
        ...

    print(f.__class__)

    # 函数就是一个实例，它的类是function

    # 类() 可以实例化出来一个对象
    # 实例.__class__  可以获得到它的类
    # 实例.__class__.__class__ 就可以获得到元类了
    # 或者 类.__class__ 就获得到元类了


    return None


if __name__ == "__main__":
    main()
